package vari

import (
	"fmt"
)

func ff() {
	//go是静态类型，定义要指定类型
	var a int = 1
	b := 2 //自动推导类型

	// var nums1 [5]int                // 定长数组
	// var slice11 []int                // 声明空切片，切片是动态数组
	slice := []int{1, 2, 3}                          // slice 动态数组
	intSlice := make([]int, 3, 5)                    // 长度3，容量5
	intSlice = append(intSlice, 4)                   //slice添加元素
	array := [3]string{"zhangsan", "lisi", "wangwu"} // array 固定长度

	// make 用于创建 slice，map，channel
	//定义map
	person := make(map[string]interface{}) //interface{} 可以存储任意类型
	person["name"] = "zhangsan"
	person["age"] = 18

	// 遍历集合  for range
	for _, v := range array {
		fmt.Println(v)
	}

	for k, v := range person {
		fmt.Println(k, v)
	}
	fmt.Println(a, b, slice, intSlice)

	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
	len := 100
	for len < 200 { //for 实现 while， go 没有while
		len++
		fmt.Println(len)
	}

	//new 返回指针，需要单独初始化，所以make更快
	ptrint := new(int)
	*ptrint = 10 //返回指针，需要解引用才能使用

	ptrclice := new([]int) //返回切片类型的指针
	*ptrclice = append(*ptrclice, 1, 2, 3)
	fmt.Println(*ptrclice)
}
